home *** CD-ROM | disk | FTP | other *** search
File List | 1993-04-01 | 10.3 KB | 288 lines |
- 000001 0000 ; Main program
- 000002 0000 ;
- 000003 0000 ; 1424 min 1444 max 5 stack
- 000004 0000 ;
- 000005 0000 MAIN:
- 000006 0000 BD002A JSR SIMPLE
- 000007 0003 BD002F JSR FWDBRA
- 000008 0006 BD0044 JSR BCKBRA
- 000009 0009 BD005A JSR SIMPLOOP
- 000010 000C BD0061 JSR BACKLOOP
- 000011 000F BD006A JSR COMPLEX
- 000012 0012 BD0077 JSR INDJMP
- 000013 0015 BD007D JSR INSTIME
- 000014 0018 BD0081 JSR ILLEGAL
- 000015 001B BD0085 JSR OUTLOOP
- 000016 001E BD0097 JSR TWOLOOP
- 000017 0021 BD00A5 JSR VARLOOP
- 000018 0024 CE002A LDX #SIMPLE
- 000019 0027 AD00 JSR 0,X ; Use 0 cycles 0 stack
- 000020 0029 39 RTS
-
- 000021 002A ; Simple subroutine
- 000022 002A ;
- 000023 002A ; Contains no conditional branches.
- 000024 002A ;
- 000025 002A ; 11 min 11 max 0 stack
- 000026 002A ;
- 000027 002A SIMPLE:
- 000028 002A 40 NEGA
- 000029 002B 48 ASLA
- 000030 002C 8B05 ADDA #5
- 000031 002E 39 RTS
-
- 000032 002F ; Forward branches
- 000033 002F ;
- 000034 002F ; Contains only forward branches.
- 000035 002F ;
- 000036 002F ; 16 min 26 max 0 stack
- 000037 002F ;
- 000038 002F FWDBRA:
- 000039 002F 47 ASRA
- 000040 0030 2406 BCC FWD010
- 000041 0032 CE002A LDX #SIMPLE
- 000042 0035 47 ASRA
- 000043 0036 2405 BCC FWD020
- 000044 0038 FWD010:
- 000045 0038 CE002F LDX #FWDBRA
- 000046 003B 2006 BRA FWDRET
- 000047 003D FWD020:
- 000048 003D 47 ASRA
- 000049 003E 2403 BCC FWDRET
- 000050 0040 CE0044 LDX #BCKBRA
- 000051 0043 FWDRET:
- 000052 0043 39 RTS
-
- 000053 0044 ; Backward normal branches
- 000054 0044 ;
- 000055 0044 ; Contains only backward normal branches.
- 000056 0044 ;
- 000057 0044 ; 16 min 26 max 0 stack
- 000058 0044 ;
- 000059 0044 BCKBRA:
- 000060 0044 47 ASRA
- 000061 0045 2407 BCC BCK010
- 000062 0047 CE002A LDX #SIMPLE
- 000063 004A 47 ASRA
- 000064 004B 2406 BCC BCK020
- 000065 004D BCKRET:
- 000066 004D 39 RTS
- 000067 004E BCK010:
- 000068 004E CE002F LDX #FWDBRA
- 000069 0051 20FA BRA BCKRET
- 000070 0053 BCK020:
- 000071 0053 47 ASRA
- 000072 0054 24F7 BCC BCKRET
- 000073 0056 CE0044 LDX #BCKBRA
- 000074 0059 39 RTS
-
- 000075 005A ; Simple loop
- 000076 005A ;
- 000077 005A ; A simple loop.
- 000078 005A ;
- 000079 005A ; 42 min 42 max 0 stack
- 000080 005A ;
- 000081 005A SIMPLOOP:
- 000082 005A 8605 LDAA #5
- 000083 005C SIMP010:
- 000084 005C 01 NOP
- 000085 005D 4A DECA
- 000086 005E 26FC BNE SIMP010 ; TAKE 4
- 000087 0060 39 RTS
-
- 000088 0061 ; Loop with backwards branch
- 000089 0061 ;
- 000090 0061 ; A simple loop with a normal backwards
- 000091 0061 ; branch that terminates in the middle.
- 000092 0061 ;
- 000093 0061 ; 62 min 62 max 0 stack
- 000094 0061 ;
- 000095 0061 BACKLOOP:
- 000096 0061 8606 LDAA #6
- 000097 0063 BACK010:
- 000098 0063 4A DECA
- 000099 0064 2703 BEQ BACKRET
- 000100 0066 01 NOP
- 000101 0067 20FA BRA BACK010
- 000102 0069 BACKRET:
- 000103 0069 39 RTS
-
- 000104 006A ; Complex loop
- 000105 006A ;
- 000106 006A ; A loop that will trigger the
- 000107 006A ; complex loop message.
- 000108 006A ;
- 000109 006A ; 43 min 43 max 2 stack
- 000110 006A ;
- 000111 006A COMPLEX:
- 000112 006A 8605 LDAA #5
- 000113 006C COMPL1:
- 000114 006C 4A DECA
- 000115 006D 2704 BEQ COMPX1 ; FALL 2
- 000116 006F 4A DECA
- 000117 0070 26FA BNE COMPL1 ; TAKE 2
- 000118 0072 39 RTS
- 000119 0073 COMPX1:
- 000120 0073 BD0076 JSR COMPX2
- 000121 0076 COMPX2:
- 000122 0076 39 RTS
-
- 000123 0077 ; Indirect jump test
- 000124 0077 ;
- 000125 0077 ; Indirect jump that goes some place
- 000126 0077 ; and one that returns.
- 000127 0077 ;
- 000128 0077 ; 11 min 11 max 0 stack
- 000129 0077 ;
- 000130 0077 INDJMP:
- 000131 0077 6E00 JMP 0,X ; Destination JMPRET
- 000132 0079 01 NOP
- 000133 007A JMPRET:
- 000134 007A 38 PULX ; Pull return address
- 000135 007B 6E00 JMP 0,X ; Use indirect jump as RTS
-
- 000136 007D ; Instructions that can not be timed
- 000137 007D ;
- 000138 007D ; These instructions can not be timed.
- 000139 007D ;
- 000140 007D ; 8 min 8 max 0 stack
- 000141 007D ;
- 000142 007D INSTIME:
- 000143 007D 2701 BEQ INST010 ; May be skipped
- 000144 007F CF STOP ; Stop instruction
- 000145 0080 INST010:
- 000146 0080 39 RTS
-
- 000147 0081 ; Illegal instructions
- 000148 0081 ;
- 000149 0081 ; These are illegal in the demo.
- 000150 0081 ;
- 000151 0081 ; 8 min 8 max 0 stack
- 000152 0081 ;
- 000153 0081 ILLEGAL:
- 000154 0081 2701 BEQ ILL010 ; May be skipped
- 000155 0083 3D MUL
- 000156 0084 ILL010:
- 000157 0084 39 RTS
-
- 000158 0085 ; Outer loop
- 000159 0085 ;
- 000160 0085 ; The output loop of nested loops.
- 000161 0085 ;
- 000162 0085 ; 482 min 482 max 3 stack
- 000163 0085 ;
- 000164 0085 OUTLOOP:
- 000165 0085 8605 LDAA #5
- 000166 0087 OUT010:
- 000167 0087 36 PSHA
- 000168 0088 BD0090 JSR INLOOP
- 000169 008B 32 PULA
- 000170 008C 4A DECA
- 000171 008D 26F8 BNE OUT010 ; TAKE 4
- 000172 008F 39 RTS
-
- 000173 0090 ; Inner loop
- 000174 0090 ;
- 000175 0090 ; The inner loop of nested loops.
- 000176 0090 ;
- 000177 0090 ; 77 min 77 max 0 stack
- 000178 0090 ;
- 000179 0090 INLOOP:
- 000180 0090 860A LDAA #10
- 000181 0092 IN010:
- 000182 0092 01 NOP
- 000183 0093 4A DECA
- 000184 0094 26FC BNE IN010 ; TAKE 9
- 000185 0096 39 RTS
-
- 000186 0097 ; Two loops
- 000187 0097 ;
- 000188 0097 ; Two loops in one.
- 000189 0097 ;
- 000190 0097 ; 436 min 436 max 0 stack
- 000191 0097 ;
- 000192 0097 TWOLOOP:
- 000193 0097 CE0005 LDX #5
- 000194 009A TWO010:
- 000195 009A 01 NOP
- 000196 009B 860A LDAA #10
- 000197 009D TWO020:
- 000198 009D 01 NOP
- 000199 009E 4A DECA
- 000200 009F 26FC BNE TWO020 ; TAKE 49
- 000201 00A1 ;
- 000202 00A1 09 DEX
- 000203 00A2 26F6 BNE TWO010 ; TAKE 4
- 000204 00A4 ;
- 000205 00A4 39 RTS
-
- 000206 00A5 ; Variable loops
- 000207 00A5 ;
- 000208 00A5 ; Loops different number of times
- 000209 00A5 ;
- 000210 00A5 ; 211 min 211 max 2 stack
- 000211 00A5 ;
- 000212 00A5 VARLOOP:
- 000213 00A5 8605 LDAA #5
- 000214 00A7 BD00B4 JSR DIFSUB ; 30 cycles
- 000215 00AA 860A LDAA #10
- 000216 00AC BD00B4 JSR DIFSUB ; 55 cycles
- 000217 00AF 8614 LDAA #20
- 000218 00B1 7E00B4 JMP DIFSUB
- 000219 00B4 ;
- 000220 00B4 DIFSUB:
- 000221 00B4 4A DECA
- 000222 00B5 26FD BNE DIFSUB ; TAKE 19
- 000223 00B7 39 RTS
-
- 000224 00B8 ; Stack Imbalance
- 000225 00B8 ;
- 000226 00B8 ; Stack may become imbalanced
- 000227 00B8 ;
- 000228 00B8 ; 10 min 13 max 1 stack
- 000229 00B8 ;
- 000230 00B8 STKIMB:
- 000231 00B8 01 NOP
- 000232 00B9 2601 BNE STK010
- 000233 00BB 36 PSHA
- 000234 00BC STK010:
- 000235 00BC 39 RTS
- 000236 00BD .END
-
- BACK010 =0063
- BACKLOOP=0061
- BACKRET =0069
- BCK010 =004E
- BCK020 =0053
- BCKBRA =0044
- BCKRET =004D
- COMPL1 =006C
- COMPLEX =006A
- COMPX1 =0073
- COMPX2 =0076
- DIFSUB =00B4
- FWD010 =0038
- FWD020 =003D
- FWDBRA =002F
- FWDRET =0043
- ILL010 =0084
- ILLEGAL =0081
- IN010 =0092
- INDJMP =0077
- INLOOP =0090
- INST010 =0080
- INSTIME =007D
- JMPRET =007A
- MAIN =0000
- OUT010 =0087
- OUTLOOP =0085
- SIMP010 =005C
- SIMPLE =002A
- SIMPLOOP=005A
- STK010 =00BC
- STKIMB =00B8
- TWO010 =009A
- TWO020 =009D
- TWOLOOP =0097
- VARLOOP =00A5
-